<?php
	// Si le fichier de qui d�finie  les constantes n'a pas encore �t� appel� on le charge
	if( !defined( 'CONFIGURATION_FILE_LOADED'))
		include( $_SERVER['DOCUMENT_ROOT'].'/lesondeschefs/includes/configuration_include.php');
	
	function model_users_config_informations( $bdd)
	{
		// On pr�pare la requ�te SQL
		$req = $bdd->query(
			"SELECT *
			FROM users
			INNER JOIN user_type
			ON users.id_user_type= user_type.id_user_type
			WHERE user_type_name!='root'
		");
		 
		// Si il y a eu une erreur dans l'ex�cution de la requ�te( si la requ�te a �t� mal �crite) on retourne null
		if(!$req->execute()) return null;
		
		// On r�cup�re tous les �v�nements en attentes de validation sous forme d'un tableau
		$response= $req->fetchall( PDO::FETCH_ASSOC);
		 
		// Si le tableau r�cup�r� est vide( si il n'y a pas d'�v�nement en 
		// attente de validation) on retourne null sinon on retourne ce tableau
		return (empty( $response)) ? null : $response;
	}	
	
	// Retourne 0 si l'utilisateur '$id_user' n'est pas administrateur
	// Retourne 1 si c'est un administrateur
	function model_is_root( $bdd, $id_user)
	{
		$req= $bdd->prepare(
			"SELECT user_type.user_type_name, users.id_user
		  	FROM users
		  	INNER JOIN user_type
			ON users.id_user_type= user_type.id_user_type
		  	WHERE user_type_name='root'
		  	AND users.id_user=:id_user"
		);
		
		if(!$req->execute( array ( 'id_user'=> $id_user))) return 0;
		
		$response= $req->fetch( PDO::FETCH_ASSOC);
		
		return (empty( $response)) ? 0 : 1;
	}

	function model_set_admin($bdd, $id_user, $id_user_to_set_root)
	{
		if(!model_is_root( $bdd, $id_user)) return 0;
		
		// On r�cup�re l'identifiant correspondant au type 'root'
		$res= $bdd->query(
				"SELECT id_user_type
				FROM user_type
				WHERE user_type_name='admin'")->fetch( PDO::FETCH_ASSOC);
		
		if( !isset($res['id_user_type'])) return 0;
		
		$id_user_to_set_root= $bdd->quote( $id_user_to_set_root);
		$id_root= $bdd->quote( $res['id_user_type']);
		
		$res= $bdd->exec(
			"UPDATE users
			SET id_user_type=". $id_root ."
			WHERE id_user=". $id_user_to_set_root
		);
		
		return (empty($res)) ? 0 : 1;
	}
	
	function model_set_normal( $bdd, $id_user, $id_to_set_normal)
	{
		if(!model_is_root( $bdd, $id_user)) return 0;
		
		// On r�cup�re l'identifiant correspondant au type 'root'
		$res= $bdd->query(
				"SELECT id_user_type
				FROM user_type
				WHERE user_type_name='normal'")->fetch( PDO::FETCH_ASSOC);
		
		if( !isset($res['id_user_type'])) return 0;
		
		$id_to_set_normal= $bdd->quote( $id_to_set_normal);
		$id_normal= $bdd->quote( $res['id_user_type']);
		
		$res= $bdd->exec(
			"UPDATE users
			SET id_user_type=". $id_normal ."
			WHERE id_user=". $id_to_set_normal
		);
		
		return (empty($res)) ? 0 : 1;
	}
	
	function model_delete_user( $bdd, $id_user, $id_user_to_delete)
	{
		// V�rifie que l'utilisateur qui demande la suppression est bien root et que celui qu'on supprime ne l'est pas
		if(!model_is_root( $bdd, $id_user) || model_is_root( $bdd, $id_user_to_delete)) return 0;
	
		$id_user_to_delete= $bdd->quote( $id_user_to_delete);
		
		$res= $bdd->exec(
			"DELETE FROM users
			WHERE id_user=". $id_user_to_delete
		);
		
		return ( empty($res)) ? 0 : 1;
	}
	
?>